package cn.wolfcode.trip.base.service;

import cn.wolfcode.trip.base.domain.User;
import cn.wolfcode.trip.base.query.QueryObject;
import com.github.pagehelper.PageInfo;
import org.omg.PortableInterceptor.USER_EXCEPTION;

import java.util.List;
import java.util.Map;

import static cn.wolfcode.trip.base.domain.Great.NOREAD;

public interface IUserService {
    /**
     * 功能:
     * 检查用户邮箱是否存在,
     * 用户登录的校验(password不为null,时用于登录)
     * @param email,password;
     * @return
     */
    User getUserByEmailAndPassword(String email,String password);
    void save(User user);

    /**
     * 注册用户,
     * @param user
     */
    User regist(User user);

    /**
     * 用户登录
     * @param email,password
     *
     */
    User login(String email ,String password);

    PageInfo<User> query(QueryObject qo);

    /**
     * 编辑客户的基本信息
     * @param user
     */
    void update(User user);

    /**
     * 编辑之后的回显
     * @param userId
     * @return
     */
    User getUser(Long userId);

    /**
     * 查询用户的点赞数
     * @param authorId
     * @return
     */
    int getGreatNum(Long authorId,int state);

    /**
     * 查询点赞的具体消息
     * @param authorId
     * @return
     */
    List<Map<String,Object>> getGreatMessage(Long authorId);

    /**
     * 获取评论的消息
     * @param authorId
     * @return
     */
    List<Map<String,Object>> getCommentMessage(Long authorId);

    /**
     * 查询评论数
     * @param authorId
     * @param noread
     * @return
     */
    int getCommentNum(Long authorId, int noread);

    /**
     * 查询系统通知消息
     * @param authorId
     * @return
     */
    List<Map<String,Object>> getSyetemMessage(Long authorId);

    int getSystemNum(Long authorId, int read);

    /**
     * 查询私信数
     * @param authorId
     * @param read
     * @return
     */
    int getPrivateNum(Long authorId, int read);

    /**
     * 查询所有的用户
     */
    List<User> selectAll();

    /**
     * 查询用户爹艾特数
     * @param authorId
     * @param read
     * @return
     */
    int getAiteNum(Long authorId, int read);

    List<Map<String,Object>> getAiteMessage(Long authorId);
}
